package com.andnnl.config;


import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * @作者 陈先生
 * @创建时间 2018年7月13日
 * @功能描述 自定义拦截器
 */
@Configuration
public class SessionInterceptor implements HandlerInterceptor {

    /**
     * 在请求处理之前进行调用（Controller方法调用之前）
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        // 进行逻辑判断，如果ok就返回true，不行就返回false，返回false就不会处理改请求
        HttpSession session = request.getSession();
//    	Object userInfoSessionObj  = session.getAttribute(SmsConst.USER_SESSION_KEY);
//    	if(userInfoSessionObj != null){
//    		UserInfoSession  userInfoSession = (UserInfoSession)userInfoSessionObj;
//    		if(userInfoSession.isNeedCheckMobile()){
//    			DESCoding d = new DESCoding(SmsConst.BIND_KEY.getBytes());
//    			Cookie cookie = CookieUtil.getCookieByName(request, "bind" + userInfoSession.getUserId());
//    			if (cookie == null)
//    			{
//    				response.sendRedirect("checkMobile");
//    				return false;
//    			}
//    			String[] strs = new String(d.decode(HexUtil.hexStr2Bytes(cookie.getValue()))).split(",");
//    			Long timeSs = (System.currentTimeMillis() - Long.parseLong(strs[1])) / 1000;
//    			if (cookie == null || strs == null || !strs[0].equals(userInfoSession.getUserId()) || SmsConst.SAVETIME < timeSs)
//    			{
//    				response.sendRedirect("/checkMobile");
//    				return false;
//    			}
//    			return true;
//    		}else{
//    			return true;
//    		}
//    	}
//
//    	response.sendRedirect("/login");
//    	return false;

        return true;

    }

    /**
     * 请求处理之后进行调用，但是在视图被渲染之前（Controller方法调用之后）
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                           ModelAndView modelAndView) throws Exception {
    }

    /**
     * 在整个请求结束之后被调用，也就是在DispatcherServlet 渲染了对应的视图之后执行（主要是用于进行资源清理工作）
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {

    }

}